Phoenix at Scale
https://gyazo.com/3007b72c42cee747bc46b24ecde3a5cb
Redix
Redis pipeline
connection pooling
RedisZ
Redis cluster は使はなかった
pubsub
small users in a topic, many topics
Redis pubsub
push 型
client 側で sharding
大きい data は gzip 壓縮
Phoenix.Socket 單位で crush させる
Process.flag(:max_heap_size, 1024 * 1024 * 1)
:message_queue_len を制限
poenix_pubsub_redis_z
small topics, many users in a topic
Redis stream
pull 型
Lua を eval させる
各 Phoenix channel には Redis と遣り取りさせず、1 つの GenServer & Registry で中繼する